how linkedhashmap works internally